package com.yunke.dto.dazi;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;

/**
 * 云科搭子列表查询DTO
 * 
 * @author yunke
 * @since 2024-01-01
 */
@Data
@Schema(description = "搭子列表查询参数")
public class YunkeDaziListDto {

    /**
     * 分类ID
     */
    @Schema(description = "分类ID")
    private Long tabClassId;

    /**
     * 关键词搜索
     */
    @Schema(description = "关键词搜索")
    private String keyword;

    /**
     * 活动地点
     */
    @Schema(description = "活动地点")
    private String location;

    /**
     * 状态 1-已发布 2-进行中 3-已完成
     */
    @Schema(description = "状态 1-已发布 2-进行中 3-已完成")
    private Integer status;

    /**
     * 性别要求 0-不限 1-男 2-女
     */
    @Min(value = 0, message = "性别要求值错误")
    @Max(value = 2, message = "性别要求值错误")
    @Schema(description = "性别要求 0-不限 1-男 2-女")
    private Integer genderLimit;

    /**
     * 年龄范围筛选最小值
     */
    @Min(value = 0, message = "最小年龄不能小于0")
    @Max(value = 150, message = "最小年龄不能超过150")
    @Schema(description = "年龄范围筛选最小值")
    private Integer ageMin;

    /**
     * 年龄范围筛选最大值
     */
    @Min(value = 0, message = "最大年龄不能小于0")
    @Max(value = 150, message = "最大年龄不能超过150")
    @Schema(description = "年龄范围筛选最大值")
    private Integer ageMax;

    /**
     * 活动时间开始
     */
    @Schema(description = "活动时间开始")
    private Long activityTimeStart;

    /**
     * 活动时间结束
     */
    @Schema(description = "活动时间结束")
    private Long activityTimeEnd;

    /**
     * 排序方式 1-最新发布 2-活动时间 3-人气最高 4-距离最近
     */
    @Min(value = 1, message = "排序方式值错误")
    @Max(value = 4, message = "排序方式值错误")
    @Schema(description = "排序方式 1-最新发布 2-活动时间 3-人气最高 4-距离最近", example = "1")
    private Integer orderBy;

    /**
     * 当前页码
     */
    @Min(value = 1, message = "页码不能小于1")
    @Schema(description = "当前页码", example = "1")
    private Integer current = 1;

    /**
     * 每页数量
     */
    @Min(value = 1, message = "每页数量不能小于1")
    @Max(value = 100, message = "每页数量不能超过100")
    @Schema(description = "每页数量", example = "10")
    private Integer size = 10;

    /**
     * 用户经度（用于距离排序）
     */
    @Schema(description = "用户经度")
    private String userLongitude;

    /**
     * 用户纬度（用于距离排序）
     */
    @Schema(description = "用户纬度")
    private String userLatitude;
} 